#include <iostream>
#include <queue>
using namespace std;

struct node {
	int v, k;
	node(int v, int k) {
		this->v = v;
		this->k = k;
	}
};

int w[105];
int vis[1005];
int n, m;

int bfs() {
	queue<node> q;
	q.push(node(0, 0));
	while (q.size()) {
		node x = q.front();
		q.pop();
		
		if (x.v > m) continue;
		if (vis[x.v]) continue;
		vis[x.v] = 1;
		
		if (x.v == m) {
			return x.k;
		}
		
		for (int i = 1; i <= n; ++i) {
			if (!vis[x.v + w[i]]) {
				q.push(node(x.v + w[i], x.k + 1));
			}
		}
	}
	return -1;
}

int main() {
	cin >> n >> m;
	for (int i = 1; i <= n; ++i) {
		cin >> w[i];
	}
	
	int x = bfs();
	if (x == -1) {
		printf("Impossible");
	} else {
		printf("%d\n", x);
	}
	return 0;
} 
